This disclosure relates generally to the tracking of resources for a graphics processing unit (GPU). More particularly, but not by way of limitation, this disclosure relates to a technique for the utilization of hardware to track the execution of fine-grained amounts of work on a GPU.
One goal for managing hardware resources of computing devices such as a GPU, is utilizing as much of the computing device as much of the time as possible. One approach to increasing a computing device's hardware utilization is to simultaneously execute multiple processes in parallel and dynamically allocate the hardware resources between them. In many cases, the underlying hardware resources may not be able to be allocated at a fine enough granularity to match a requested division of resources; possibly causing the starvation of one or more processes (e.g., one or more lower priority processes). In addition, software systems issuing or generating such requests are often unable to detect when the underlying hardware resources have been allocated differently from that requested. Each of these situations can result in hardware utilizations being sub-optimal.